Originx 创新解法——应用依赖故障篇
依赖故障指应用 运行所依赖的环境包括网络、中间件、缓存故障导致应用出现故障。这部分故障的根因并不是应用代码的问题,但是其最终表现形式和应用代码故障表现形式类似,很难区分。本文重点呈现Originx如何针对应用环境所依赖的故障进行根因分析,之前的系列文章请参考:
之前的系列文章: 在线业务的常见全栈故障种类与定位手段
文章中对常见的全栈故障的传统定位方法进行了阐述。
文章中呈现了如何利用Originx的功能对应用程序故障的根因定位。
网络故障
网络连接中断、延迟或丢包
○ 案例:2023年4月,某互联网金融云平台因内部容器云平台的COREDNS服务器群集发生异常,导致整个私有云内的核心交易系统无法正常解析内部服务地址。在接下来的3个小时内,平台的放贷、风控等多个交易系统出现大面积延迟和连接中断,账户查询、委托下单等关键业务无法正常使用。据初步统计,这次故障给金融机构带来的直接经济损失高达数亿元人民币。最终通过手动配置绕过DNS解析,临时恢复关键系统连接,但整体恢复所需时间超过10个小时。事后分析发现,DNS集群全军覆没是由于COREDNS升级之后的bug导 致,但是没有完善的监控导致故障发现严重滞后。
如果出现案例描述中的网络故障,需要安装专业的网络流量监控工具,并配备相关专业网络专家才能很好分析出问题。此外,网络监控的基线是非常难建立的,以丢包为例,出现丢包就应该告警吗?那会产生非常多的错误告警
Originx轻松能够帮助用户分析出根因:
Originx的解决之道:
1、在Originx首页,Originx的SLO告警就会针对SLO违约告警
2、同时会分析出可能的故障根因节点,当点击详情之后,每个节点的故障初因列表会被呈现出来
3、根据依赖关系,在疑似的故障根因节点中找到最下游疑似故障节点的故障初因列表,故障初因为“请求下游节点耗时长”,其上游节点多半初因也是这个初因特征,但是上游节点更大概率是由于故障节点级联影响导致,所以应该先验证下游节点的故障根因之后,再排查上游节点的故障根因
4、在故障报告的报告头部呈现的是故障概览,这里关联了TraceId以及发生的时间,如果有必要可以使用TraceId去关联分析Tracing数据
5、在故障报告左边栏中,确认故障传播链路,近似于下图,通过这个数据可以确认在此次报告中故障节点判定是否正确
6、在故障根因中,能够看到根因结论,在多份报告中看到同样的根因报告,这个时候其实可以采取应急手段来恢复业务了,针对本案例的情况: 应急手段就是迁移应用或者切流量了,具体应急措施要看企业之前应急措施准备了哪些条件,如果什么应急手段都没有准备,而且又在云上,可以向云厂商提交工单请求协助处理
7、在故障报告中,以下的数据都是为了提供证据链条来确认故障报告的准确性
北极星指标(通过北极星指标,Originx给出了异常幅度最大的异常方向,本截图的方向就是网络方向,反映出问题有两种可能,是网络真实有问题也可能是下游执行程序缓慢,网络可能存在真实问题,或者下游执行程序运行缓慢。在后续的分析中,我们将通过评估网络质量来确定是否确实存在网络问题)
接下来会列出所有程序在此次请求中执行过的所有网络请求(某些APM产品可能没有实现插裝就发现不了一些隐藏的网络调用,而Originx从内核判断网络,所有的网络调用一定会出现在这里)
接下来,将深入分析网络请求中耗时最长的部分,以精准定位网络层面的时间损耗原因。(此截图反映网络故障出现在容器网络pod,也就是容器网络有问题)
之后就是通过网络质量指标丢包和延时来进一步证实
同时还会判断网络拥塞指标,如果当时节点的CPU快耗尽的时候,虚拟网络也会出现丢包,重传的现象
网络配置错误
○ 案例:2022年12月,世界杯决赛期间,某大型视频直播平台由于网络设备配置问题,导致导致网络丢包比例较大,数百万在线用户观看比赛直播受到严重影响,画面频频卡顿中断。该故障持续近2小时,给平台带来了广告收益损失,也影响了品牌声誉。经过紧急处理和优化,网络质量逐步恢复,但已错过了决赛最关键时段。
如果出现案例描述中的网络故障,是交换机的配置错误导致丢包增加,排障流程和之前所说的网络故障是一样的,唯一的区别就是交换机等物理设备导致网络出现重传和丢包之时,故障耗时是在物理网络段,而不是在虚拟网络段。(由于没法用TC模拟出物理网络出现问题,所以没有办法贴出物理网络有延时的截图,如果真实物理网络有问题应该反映在下图中标红的位置)